﻿using System;
using System.Linq;
using System.Text;
using System.Data;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
using System.ComponentModel;
using System.Collections.Generic;

namespace Gerenciador
{
    public class Desenho
    {
        /*Variáveis usadas no método Pisca-Pisca*/
    /*-------*/
        System.Windows.Forms.Label PKPisca;
        System.Drawing.Color Cor1Pisca;
        System.Drawing.Color Cor2Pisca;
        
        int TimePisca;
        public int Quant_Pisca = 0;
        
        public bool PiscaParar = false;
    /*-------*/


        public void Centralizar(System.Windows.Forms.Control KL, System.Windows.Forms.Control PX)
        {
            /*KL = Controle a ser centralizado*/
            /*PX = Local onde iremos centralizar o controle*/
            
            /*Centralizando na vertical e na horizontal*/
            CentralizaHorizontal(KL, PX);
            CentralizaVertical(KL, PX);

        }


        public void CentralizaHorizontal(System.Windows.Forms.Control KL, System.Windows.Forms.Control PX)
        {
            /*KL = Controle a ser centralizado*/
            /*PX = Local onde iremos centralizar o controle*/

            int Largura = PX.Size.Width;   /*Largura onde se encontra o controle*/

            /*Cálculo para buscar o centro do form*/
            KL.Location = new System.Drawing.Point((Largura - KL.Size.Width) / 2, KL.Location.Y);

        }


        public void CentralizaVertical(System.Windows.Forms.Control KL, System.Windows.Forms.Control PX)
        {
            /*KL = Controle a ser centralizado*/
            /*PX = Local onde iremos centralizar o controle*/

            int Altura = PX.Size.Height;   /*Altura onde se encontra o controle*/

            /*Cálculo para buscar o centro do form*/
            KL.Location = new System.Drawing.Point(KL.Location.X, (Altura - KL.Size.Height) / 2);

        }


        public void DesaparecerEmFade(System.Windows.Forms.Form PX, int Tempo)
        {
            /*Algoritimo que cria um efeito de surgir lentamente*/
            PX.Opacity = 100;

            for (double I = 1; I >= 0; I -= 0.1)
            {
                PX.Opacity = I;
                PX.Update();

                System.Threading.Thread.Sleep(Tempo);   /*Tempo deve ser lançado em milisegundos*/

            }

        }


        public void DeslocarControle(System.Windows.Forms.Control PX, int X, int Y)
        {
            /*PX = Controle a ser deslocado*/

            /*Move o controle*/
            PX.Location = new System.Drawing.Point(PX.Location.X + X, PX.Location.Y + Y);

        }


        public void IniciarEmFade(System.Windows.Forms.Form PX, int Tempo)
        {
            /*Algoritimo que cria um efeito de surgir lentamente*/
            PX.Opacity = 0;

            for (double I = 0; I <= 1; I += 0.1)
            {
                PX.Opacity = I;
                PX.Update();

                System.Threading.Thread.Sleep(Tempo);   /*Tempo deve ser lançado em milisegundos*/             

            }

        }


        public void Maximizar(System.Windows.Forms.Form PX)
        {
            /*Variáveis usadas para capturar a altura e a largura da tela*/
            int Altura = 0;
            int Largura = 0;

            /*Obtendo altura e largura sa tela*/
            Largura = Screen.PrimaryScreen.Bounds.Width;
            Altura = Screen.PrimaryScreen.Bounds.Height;

            /*Maximizando a tela de acordo com a resolução de vídeo*/
            PX.ClientSize = new System.Drawing.Size(Largura, Altura);

        }


        public void PiscaPisca(System.Windows.Forms.Label PK, System.Drawing.Color Cor1,
             System.Drawing.Color Cor2, int Time)
        {
            /*Onde PK = Label que faremos piscar*/
            /*Onde time e a velocidade com que a label irá piscar*/

            PKPisca = PK;
            Cor1Pisca = Cor1;
            Cor2Pisca = Cor2;
            TimePisca = Time;

            /*Rodamos esta função em paralelo com as outras*/
            Thread Metodo = new Thread(TheadPiscar);
            Metodo.Start();

        }


        private void TheadPiscar()
        {
            while (PiscaParar == false)
            {
                PKPisca.ForeColor = Cor1Pisca;
                System.Threading.Thread.Sleep(TimePisca);

                PKPisca.ForeColor = Cor2Pisca;
                System.Threading.Thread.Sleep(TimePisca);

                /*Geralmente usado em telas de Loads, guarda o número de veses que as letras piscaram*/
                Quant_Pisca++;

            }

        }


        public void PararPiscaPisca()
        {
            PiscaParar = true;   /*Finalizando a Thread*/

        }

        /*FIM*/

    }

}
